<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Lazy Load Images Example</title>
    <link rel="stylesheet" href="styles.css"> <!-- 引入CSS样式 -->
    <style>
        /* 页面内容样式 */
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            text-align: center;
        }

        h1 {
            margin-top: 20px;
        }

        .image-container {
            max-width: 600px;
            margin: 0 auto;
            padding: 20px;
        }

        /* 图片样式 */
        .lazy-load {
            width: 100%;
            height: auto;
            margin-bottom: 20px;
            opacity: 0;
            /* 初始隐藏图片 */
            transition: opacity 0.3s ease-in;
            /* 图片加载后渐显效果 */
        }

        /* 图片加载完毕后渐显 */
        .lazy-load.loaded {
            opacity: 1;
        }
    </style>
</head>

<body>
    <h1>Lazy Loading Images</h1>

    <!-- 图片列表，使用 data-src 存储真实的图片地址 -->
    <div class="image-container">
        <img data-src="./images/1.jpg" alt="Image 1" class="lazy-load">
        <img data-src="./images/2.jpg" alt="Image 2" class="lazy-load">
        <img data-src="./images/3.jpg" alt="Image 3" class="lazy-load">
        <img data-src="./images/4.jpg" alt="Image 4" class="lazy-load">
        <img data-src="./images/5.jpg" alt="Image 5" class="lazy-load">
    </div>

    <script>// 监听页面滚动事件
        window.addEventListener('scroll', function () {
            // 获取所有具有 data-src 属性的图片
            const images = document.querySelectorAll('img[data-src]');
            const windowHeight = window.innerHeight; // 获取视窗高度

            // 遍历每一张图片，检查是否进入视窗
            images.forEach(img => {
                const rect = img.getBoundingClientRect(); // 获取图片相对于视窗的位置
                if (rect.top < windowHeight) { // 如果图片进入视窗
                    img.src = img.dataset.src; // 将真实图片地址赋给 src 属性
                    img.removeAttribute('data-src'); // 移除 data-src 属性
                    img.classList.add('loaded'); // 添加 loaded 类，触发渐显效果
                }
            });
        });

        // 页面初始时检查是否有图片已经在视窗中
        document.addEventListener('DOMContentLoaded', function () {
            window.dispatchEvent(new Event('scroll'));
        });</script> <!-- 引入JS脚本 -->
</body>

</html>